With the advent of cloud computing technology, hardware (such as CPUs, memory, storage, and networking resources) can be provided to tenants on demand by employing virtualization technology. Therefore the hardware can be shared in a cloud computing environment, allowing the facility to operate while employing significantly fewer resources (such as servers) than a similarly situated facility employing a dedicated architecture. In search of ever greater optimization of cloud computing systems, hardware assignment and sharing schemes have become increasingly complex.